"""
Filter算子：过滤想要的数据进行保留
rdd.filter(func)
     func : (T) -> bool
     传入1个参数进来，任意类型，返回必须是 True 或 False
注意：返回的 True 的数据被保留， False 的数据被丢弃

数据输出为python对象（collect、reduce、take、count）
TODO  1、 collect算子
功能：输出rdd为 list 对象
语法：print(rdd.collect())
TODO 2、 reduce算子
功能：对rdd进行两两聚合
语法：传入两个参数，返回值与参数类型一致
     num = rdd.reduce(lambda x, y: x + y)
     print(num)
TODO 3、take算子
功能：取rdd的前n个元素，组合成list返回
语法：sc.parallelize([1,2,3,4,5,6,7]).take(5)
    返回 [1,2,3,4,5]
TODO 4、count算子
功能：计算rdd有多少条数据，返回一个数字
语法：rdd.count()
"""
from pyspark import SparkConf, SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "C:/Users/Lenovo/AppData/Local/Programs/Python/Python310/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

rdd = sc.parallelize([1, 2, 3, 4, 5])

# TODO collect算子
print(rdd.filter(lambda x: x % 2 != 0).collect())

# TODO  reduce算子
num = rdd.reduce(lambda x, y: x+y)
print(num)

# TODO take算子
print(rdd.take(3))

# TODO count算子
print(rdd.count())

# TODO saveAsTextFile算子
rdd.saveAsTextFile("E:/excel学习文档-表格/rdd")